<?php

use think\Model;

/**
 * 规则对应的关键字表
 *
 * 对应关系：规则(唯一)  --->  内容(唯一)  --->  关键字(多个)
 * -  一个规则只能对应一个回复内容，一个规则可以对应多个关键字
 * -  一个回复内容只能对应一个规则，一个回复内容可以对应多个关键字
 * -  一个关键字只能对应一个规则，一个关键字只能对应一个回复内容
 *
 * Class RuleKeywordModel
 * @property int id 主键
 * @property int bot_key 机器人ID
 * @property int rid 规则表ID
 * @property string module 模块名字
 * @property string content 关键字
 * @property int match_type 1相等,2包含,3正则
 * @property int priority_order 优先级
 * @property int auth_level 权限等级
 * @property int status 事件类型
 */
class RuleKeywordModel extends Model
{
    /**
     * 完整数据表名称
     */
    const table_name = 'cq_rule_keyword';
    /**
     * 权限等级
     */
    const field_auth_level = [
        'default' => 0,
        'worker' => 1,
        'master' => 2,
        'system' => 3,
    ];
    // 完整数据表名称
    protected $table = self::table_name;

    // 设置废弃字段
    protected $disuse = [];

    // 设置字段信息
    protected $schema = [
        'id' => 'int',
        'bot_key' => 'int',
        'rid' => 'int',
        'module' => 'string',
        'content' => 'string',
        'match_type' => 'int',
        'priority_order' => 'int',
        'auth_level' => 'int',
        'status' => 'int'
    ];

    // 设置只读字段
    protected $readonly = ['id', 'bot_key', 'rid', 'module'];

    // 设置类型自动转换
    protected $type = [
        'rid' => 'integer',
        'match_type' => 'integer',
        'status' => 'integer',
    ];

    /**
     * 获取表字段
     * @return array
     */
    public function getTableField(): array
    {
        return $this->schema;
    }

    /**
     * @param $value
     * @param $data
     * @return string
     */
    public function getMatchTypeTextAttr($value, $data): string
    {
        $status = [1 => '相等', 2 => '包含', 3 => '正则'];
        return $status[$data['match_type']] ?? '未知';
    }
}
